package com.lonely.inventory.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lonely.inventory.domain.dto.stockup.*;
import com.lonely.inventory.domain.entity.SysStockUpInventory;
import com.lonely.inventory.domain.vo.stockup.QueryAddStockUpInventoryPageVO;
import com.lonely.inventory.domain.vo.stockup.StockUpInventoryPageQueryVo;
import com.lonely.inventory.domain.vo.stockup.StockUpInventorySizeInfoVo;

import java.util.List;

/**
 * @author : 黄志标
 * @date: 2025/9/24 15:09
 * @description: 备货库存服务
 */
public interface IStockUpInventoryService extends IService<SysStockUpInventory> {

    /**
     * 分页查询
     *
     * @param queryDto
     * @return
     */
    Page<StockUpInventoryPageQueryVo> page(StockUpInventoryPageQueryDto queryDto);

    /**
     * 新增备货库存时，根据条件查询商品列表
     *
     * @param queryDto
     * @return
     */
    Page<QueryAddStockUpInventoryPageVO> addStockUpInventoryPage(QueryAddStockUpInventoryPageDTO queryDto);

    /**
     * 新增备货库存
     *
     * @param submitDto
     */
    void addStockUpInventory(AddStockUpInventoryDTO submitDto);

    /**
     * 根据备货库存id查询尺码明细信息
     *
     * @param stockUpInventoryId
     * @return
     */
    List<StockUpInventorySizeInfoVo> getStockUpInventorySizeInfoList(Long stockUpInventoryId);

    /**
     * 入库
     *
     * @param submitDto
     */
    void putStorage(SubmitStockUpInventorySizeDTO submitDto);

    /**
     * 出库
     *
     * @param submitDto
     */
    void outStorage(SubmitStockUpInventorySizeDTO submitDto);

    /**
     * 调拨
     *
     * @param submitDto
     */
    void transfer(TransferStockUpInventorySizeDTO submitDto);

    /**
     * 备货上架
     *
     * @param submitDto
     */
    void stockUpStockPutAway(StockUpStockPutAwayDTO submitDto);
}
